/** Keriosity, ESIR
 * 	WifiConnection (Modele): classe permettant de commander notre robot grace au wifi
 *	@author: GOUYET Brett
 *	@date: 10/03/2012
 */

package keriosity.connection;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import android.util.Log;


public class WifiConnection implements IConnection{

	protected boolean _connectionState = false; //etat de connection
	protected String _ip = ""; //adresse du serveur
		

	/** Methode permettant d'enregistrer l'adresse du serveur
	 *  @return boolean: vrai si on a reussit, faux sinon
	 **/
	public boolean connect(String name) {
		
		if(!this.isConnected()){ //on verifie si on est pas deja connecte
			Log.i("wificonnec", name);
			_ip = name; //on recupere le nom du serveur
			_connectionState = true;
			return true;
		}
		return false; //erreur on est deja connecte
	}
	
	
	/** NON UTILISEE ICI, car le robot n'est pas nomme sur le reseau.
     * @param String name: nom du robot a trouver
     * @return boolean : vrai si on a trouve le robot, faux sinon
     */
	public boolean find(String name) {		
		
		/*try {
			_ip = InetAddress.getByName(name); //on recupere l'IP en fonction du nom passe en parametre		
		    return true;
		}catch (UnknownHostException e) {return false;}*/
		return false;
	}
	

	/** Methode envoyant les ordres au robot
     * @param String : ordre 
     * @return boolean: vrai si on a reussit a envoyer, faux sinon
     */
	public boolean send(String ordre) {
		if(this.isConnected()){
			AsynTask task = new AsynTask(ordre);
			task.start();
			return true;
		}
		return false;
		
	/*	
		try {	
			
			if(this.isConnected()){
				System.out.println("URL : " + "http://" + ordre);	    
				HttpClient httpClient = new DefaultHttpClient(); //on creer le client qui va executer la requete
				httpClient.execute(new HttpGet("http://" + ordre)); //on lui donne la requete a executer et on execute		
				return true; //on renvoi vrai si pas d'erreur	
			}
			return false; //on est pas connecte
		} 
		catch (Exception e){
			return false;
		}*/
	}

	
	/** Methode fermant la connexion 
	 * @return boolean: vrai si on s'est deconnecte, faux sinon
	 */
	public boolean disconnect() {
		
		if(this.isConnected()){
			_connectionState = false;
			return true;
		}
		return false; //on etait pas connecte
	} 
		
	
	/** Methode donnant le statut de la connection
	 * @return boolean: vrai si connecte, faux sinon
	 **/
	public boolean isConnected() {return _connectionState;}
	

	/** Methode renvoyant l'adresse IP sous forme de chaine de caracteres 
	 *  @return String: adresse IP du robot
	 */
	public String getIP(){return _ip;}
	
	public class AsynTask extends Thread {
		private String _order;
		
		public AsynTask(String order) {
			_order = order;
		}

		public void run() {
			URL url;
			try {
				url = new URL("http://" + _order);
				URLConnection urlConnection = url.openConnection();
				urlConnection.getInputStream();

			} catch (MalformedURLException e1) {
				System.out.println("ERREUR 1");
			} catch (IOException e) {
				System.out.println("ERREUR 2 : ");
			}
		}
	}
}
